/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package imp.gestores;

import imp.DAO.*;
import imp.util.*;
import imp.clases.*;

import java.util.ArrayList;

import java.util.List;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.ajax4jsf.component.html.HtmlAjaxCommandButton;

import org.richfaces.component.html.HtmlDataTable;

/**
 *
 * @author Fernando Uyaguari
 */
public class GestorPR extends BeanUtil{

    private Emprendimiento currentEmprendimiento;
    private Riesgo currentRiesgo;
    private Problema currentProblema;
    private TipoProblema currentTipoProblema;



    private HtmlDataTable tablaRiesgo;
    private HtmlDataTable tablaProblema;
    private HtmlDataTable tablaTipoProblemas;
    

        private String filtroBusqueda;
    private String accion;
    private Boolean renderRiesgo;
    private Boolean renderProblema;
    private Boolean renderTipoProblema;



    private String accionRiesgo;
    private String accionProblema;

    private DAO dao = (DAO)ServiceFinder.findBean("SpringHibernateDao");

        //private ListDataModel listado;
    private List<Riesgo> listadoRiesgos;
    private List<Problema> listadoProblemas;


    public List<Riesgo> getListadoRiesgos() {
        return listadoRiesgos;
    }

    public void setListadoRiesgos(List<Riesgo> listadoRiesgos) {
        this.listadoRiesgos = listadoRiesgos;
    }


    public GestorPR(){
        this.tablaRiesgo=new HtmlDataTable();
        this.tablaProblema=new HtmlDataTable();
        this.tablaTipoProblemas=new HtmlDataTable();
     
        this.accion="Ins";
    }
     public void buscar(){

    }

      public String listarProblemas() {

        try {
                listadoProblemas = dao.find(Problema.class);

        } catch (Exception e) {
            super.addErrorMessage(e.getMessage());
        }
        return null;
    }

        public String listarRiesgos() {

        try {
                listadoRiesgos = dao.find(Riesgo.class);

        } catch (Exception e) {
            super.addErrorMessage(e.getMessage());
        }
        return null;
    }


    public List<Problema> getListadoProblemas() {
        return listadoProblemas;
    }

    public void setListadoProblemas(List<Problema> listadoProblemas) {
        this.listadoProblemas = listadoProblemas;
    }




      public String cerrar() {

                return null;
            }

       public String grabar() {

        try {

                dao.flush();
                dao.persist(this.currentEmprendimiento);


        } catch (Exception e) {
            super.addErrorMessage(e.getMessage());
        }
    
        return null;
    }

       public String grabarRiesgo(){

            if (this.accionRiesgo.equals("Ins")){
                  try {

                            this.currentEmprendimiento.addRiesgo(currentRiesgo);

                    } catch (Exception e) {
                        super.addErrorMessage(e.getMessage());
                    }// catch
          }
            this.renderRiesgo=false;
           return null;
       }


       public String cerrarRiesgo(){
           this.renderRiesgo=false;
           return null;
       }

       public String eliminarRiesgo(){

           currentRiesgo = (Riesgo)tablaRiesgo.getRowData();
                this.currentEmprendimiento.removeRiesgo(currentRiesgo);
		return null;
       }
       public String editarRiesgo(){

            this.accionRiesgo="Mod";
                this.renderRiesgo=true;
		currentRiesgo = (Riesgo)tablaRiesgo.getRowData();
		return null;
       }
       public String nuevoRiesgo(){

                this.accionRiesgo="Ins";
                this.renderRiesgo=true;
		currentRiesgo = new Riesgo();
		return null;
       }





    public String getAccionProblema() {

        return accionProblema;

    }

    public void setAccionProblema(String accionProblema) {
        this.accionProblema = accionProblema;
    }
    private String accionTipoProblema;





       ///Problema

       public String grabarProblema(){
            if (this.accionProblema.equals("Ins")){

                try {

                        this.currentEmprendimiento.addProblema(currentProblema);
                    } catch (Exception e) {
                        super.addErrorMessage(e.getMessage());
                    }// catch

          }
            this.renderProblema=false;
           return null;

       }
       public String cerrarProblema(){
           this.renderProblema=false;
           return null;

       }
       public String eliminarProblema(){
           currentProblema = (Problema)tablaProblema.getRowData();
                this.currentEmprendimiento.removeProblema(currentProblema);
		return null;
       }
       public String editarProblema(){
            this.accionProblema="Mod";
                this.renderProblema=true;
		currentProblema = (Problema)tablaProblema.getRowData();
		return null;
       }
       public String nuevoProblema(){
            this.accionProblema="Ins";
                this.renderProblema=true;
		currentProblema = new Problema();
		return null;
       }

    public String getAccion() {
        return accion;
    }

    public Riesgo getCurrentRiesgo() {
        return currentRiesgo;
    }

    public Emprendimiento getCurrentEmprendimiento() {
        return currentEmprendimiento;
    }

    public String getFiltroBusqueda() {
        return filtroBusqueda;
    }



    public HtmlDataTable getTablaRiesgo() {
        return tablaRiesgo;
    }

    public void setAccion(String accion) {
        this.accion = accion;
    }

    public void setCurrentRiesgo(Riesgo currentRiesgo) {
        this.currentRiesgo = currentRiesgo;
    }

    public void setCurrentEmprendimiento(Emprendimiento currentEmprendimiento) {
        this.currentEmprendimiento = currentEmprendimiento;
    }

    public void setFiltroBusqueda(String filtroBusqueda) {
        this.filtroBusqueda = filtroBusqueda;
    }


    public void setTablaRiesgo(HtmlDataTable tablaRiesgo) {
        this.tablaRiesgo = tablaRiesgo;
    }

    public String getAccionRiesgo() {
        return accionRiesgo;
    }


    public void pasarParametrosTipoProblema(ActionEvent evento) {

        TipoProblema tipoProblema = currentProblema.getTipoproblema();
        GestorTipoProblemas gestorTipoProblemas = super.getBean("gestorBuscarTipoProblemas");
        gestorTipoProblemas.setCurrentTipoProblema(tipoProblema);
        gestorTipoProblemas.setReRender("panPR");
        gestorTipoProblemas.setFocus("btnBuscar");
        HtmlAjaxCommandButton boton = (HtmlAjaxCommandButton) evento.getComponent();
        boton.setOncomplete("Richfaces.showModalPanel('panelTipoProblema')");
        
    }


    public Boolean getRenderRiesgo() {
        return renderRiesgo;
    }

    public void setAccionRiesgo(String accionRiesgo) {
        this.accionRiesgo = accionRiesgo;
    }

    public void setRenderRiesgo(Boolean renderRiesgo) {
        this.renderRiesgo = renderRiesgo;
    }

    public Boolean getRenderProblema() {
        return renderProblema;
    }

    public void setRenderProblema(Boolean renderProblema) {
        this.renderProblema = renderProblema;
    }

    public Problema getCurrentProblema() {
        return currentProblema;
    }

    public void setCurrentProblema(Problema currentProblema) {
        this.currentProblema = currentProblema;
    }



    public HtmlDataTable getTablaProblema() {
        return tablaProblema;
    }



    public void setTablaProblema(HtmlDataTable tablaProblema) {
        this.tablaProblema = tablaProblema;
    }

    public HtmlDataTable getTablaTipoProblemas() {
        return tablaTipoProblemas;
    }

    public void setTablaTipoProblemas(HtmlDataTable tablaTipoProblemas) {
        this.tablaTipoProblemas = tablaTipoProblemas;
    }

    public TipoProblema getCurrentTipoProblema() {
        return currentTipoProblema;
    }

    public void setCurrentTipoProblema(TipoProblema currentTipoProblema) {
        this.currentTipoProblema = currentTipoProblema;
    }

    public String getAccionTipoProblema() {
        return accionTipoProblema;
    }

    public Boolean getRenderTipoProblema() {
        return renderTipoProblema;
    }

    public void setAccionTipoProblema(String accionTipoProblema) {
        this.accionTipoProblema = accionTipoProblema;
    }

    public void setRenderTipoProblema(Boolean renderTipoProblema) {
        this.renderTipoProblema = renderTipoProblema;
    }



}
